<?php

class Application_Model_CuentasEstados extends Sgit_Model
{
    protected $_name = 'control_economico_estado';
    protected $_primary = 'id';

    protected $version = 0;


    function setAnio($anio)
    {
        $this->anio = $anio;
    }

    function setVersion($version)
    {
        $this->version = $version;
    }

    function setZona($idZona)
    {
        $this->idZona = $idZona;
    }


    function getEstados($tipo)
    {

        if (!is_array($this->idZona))
        {
            $rows = $this->getAll(array('tipo=?' => $tipo, 'anio=?' => $this->anio, 'id_zona=?' => $this->idZona, 'version=?' => $this->version));
            $estados = $this->assocArray2($rows, 'mes');
            for ($i = 1; $i <= 12; $i++)
            {
                if (!$estados[$i]['estado'])
                    $estados[$i]['estado'] = 0;
            }
            
        }else{
            
           	$select = $this->getAdapter()->select();
			$select->from( array( 'control_economico_estado' ), array('mes','anio') );
			$select->where( 'id_zona IN (?)', $this->idZona );
            $select->where( 'tipo = ?', $tipo );
            $select->where( 'anio = ?', $this->anio );
            $select->where( 'version = ?', $this->version );
            $select->group( 'mes');
            $select->having('COUNT(estado) =?',count($this->idZona));
            
            $rows = $this->getAdapter()->fetchAll($select);
            $estados = $this->assocArray2($rows, 'mes');

            for ($i = 1; $i <= 12; $i++)
            {
                   if(isset($estados[$i]['mes'])) $estados[$i]['estado']=1;
                   else {
                        $estados[$i]['estado']=0;
                        $estados[$i]['abiertos']=$this->getEstadosNocerrados($tipo,$i);
                   }
            }
        }
        

        return $estados;
            

    }
    
    
    
    function getAllEstados()
    {
           	$select = $this->getAdapter()->select();
			$select->from( array( 'control_economico_estado' ), array('n'=>new Zend_Db_Expr('count(estado)'),'mes') );
			$select->where( 'id_zona IN (?)', $this->idZona );
            $select->where( 'tipo IN (?)', array('Alojamiento','Electricidad','MMR') );
            $select->where( 'anio = ?', $this->anio );
            $select->where( 'version = ?', $this->version );
            $select->where( 'estado = ?', 1 );
            $select->group( 'mes');
  
            
            $rows = $this->getAdapter()->fetchAll($select);
            $estados = $this->assocArray2($rows, 'mes');

        
            for ($i = 1; $i <= 12; $i++)
            {
                $salida[$i]=($estados[$i]['n']==count($this->idZona)*3) ? 1 : 0;
            }

            return $salida;
    }
    
    function getLastMesCerradoResumen()
    {
        $estados=$this->getAllEstados();
        
        foreach($estados as $k => $estado)
        {
            if($estado==1) $sal[$k]=$estado;
        }
        
        return max(array_keys($sal));

    }
    
    
    function getEstadosNocerrados($tipo,$mes)
    {
            $dc=new Application_Model_Datacenter();
            
        
            $select = $this->getAdapter()->select();
			$select->from( array( 'control_economico_estado' ), array('id_zona'));
            $select->where( 'tipo = ?', $tipo );
            $select->where( 'anio = ?', $this->anio );
            $select->where( 'version = ?', $this->version );
            $select->where( 'mes = ?', $mes );
            $select->where( 'estado = ?', 1 );
            
            $rows = $this->getAdapter()->fetchAll($select);
            $estados = $this->assocArray2($rows, 'id_zona');
            
            foreach($this->idZona as $v)
            {
                if(!$estados[$v]) $salida[$v]=$dc->cacheAssoc($v,'nombre');
            }
            
        
            
            return $salida;

    }
    
    
    function getNotasCambio($mes='')
    {
            $select = $this->getAdapter()->select();
			$select->from( array( 'control_economico_estado' ));
            $select->where( 'anio = ?', $this->anio );
            if($mes)$select->where( 'mes <= ?', $mes );
            $select->where( 'version = ?', $this->version );
            $select->where( 'id_zona IN (?)', $this->idZona );
            $select->where( 'LENGTH(notas_cambio) > ?', 2 );
            $select->order('mes desc');
            
            $rows = $this->getAdapter()->fetchAll($select);
            return $rows;
    }
    
    
    


}
